home *** CD-ROM | disk | FTP | other *** search
/ PD ROM 1 / PD ROM Volume I - Macintosh Software from BMUG (1988).iso / Programming / Programming Tools / Pascal Demos from Apple / sinegrd⁄skelr / SINEGRID.TEXT next >
Encoding:
Text File  |  1985-05-23  |  2.0 KB  |  89 lines  |  [TEXT/ttxt]

  1. {$X-}
  2. {$R-}
  3. {$D-}
  4.  
  5. Program SineGrid;
  6.  
  7.    USES {$U-}
  8.       {$U obj/Memtypes   } Memtypes,
  9.       {$U obj/QuickDraw  } QuickDraw,
  10.       {$U obj/OSIntf     } OSIntf,
  11.       {$U obj/ToolIntf   } ToolIntf,
  12.       {$U obj/FixMath    } FixMath,
  13.       {$U obj/Graf3D     } Graf3D;
  14.  
  15. {Note: This file must be linked with obj/FixMath, obj/FixAsm, and obj/Graf3D.
  16.        To build using example/exec, link using example/Graf3DLink.}
  17.  
  18.    CONST
  19.       XLB = -10;
  20.       XUB =  10;
  21.       YLB = -10;
  22.       YUB =  10; {array bounds}
  23.       keyOrMouse = mDownMask + keyDownMask;
  24.  
  25.    VAR
  26.       gPort:   GrafPort;
  27.       gPort3D:   Port3d;
  28.       data: ARRAY [XLB..XUB, YLB..YUB] OF Fixed;
  29.       dummy: EventRecord;
  30.  
  31.    PROCEDURE CalcData;
  32.    VAR
  33.       ix,
  34.       iy: INTEGER;
  35.    BEGIN
  36.       FOR ix := XLB TO XUB DO
  37.       BEGIN
  38.          FOR iy := YLB TO YUB DO
  39.             data[ix, iy] := FixDiv(FracSin(FixRatio(ix, 3)) +
  40.              FracCos(FixRatio(iy, 4)), 1073741824);
  41.       END
  42.    END;
  43.  
  44.    PROCEDURE PlotGrid;
  45.    CONST
  46.       fYLB = YLB * 65536;
  47.       fXLB = XLB * 65536;
  48.    VAR
  49.       ix,
  50.       iy: INTEGER;
  51.    BEGIN
  52.       FOR ix := XLB TO XUB DO
  53.       BEGIN
  54.          MoveTo3D(FixRatio(ix, 1), fYLB, data[ix, YLB]);
  55.          FOR iy := YLB TO YUB DO
  56.             LineTo3D(FixRatio(ix, 1), FixRatio(iy, 1), data[ix, iy]);
  57.       END;
  58.       FOR iy := YLB TO YUB DO
  59.       BEGIN
  60.          MoveTo3D(fXLB, FixRatio(iy, 1), data[XLB, iy]);
  61.          FOR ix := XLB TO XUB DO
  62.             LineTo3D(FixRatio(ix, 1), FixRatio(iy, 1), data[ix, iy]);
  63.       END;
  64.    END;
  65.  
  66. BEGIN
  67. {initialization routines}
  68.    InitGraf(@thePort);
  69.    InitCursor;
  70.    HideCursor;
  71.    OpenPort(@gPort);
  72.    Open3DPort(@gPort3D);
  73. {program begins}
  74.    CalcData;
  75.    PenPat(White);
  76.    BackPat(Black);
  77.    EraseRect(gPort.portRect);
  78.    FrameRect(gPort.portRect);
  79.    LookAt(-983040, 655360, 983040, -655360); {LookAt (-15, 10, 15, -10)};
  80.    ViewAngle(1966080); {ViewAngle(30)}
  81.    Scale(65536, 65536, 196608); {Scale(1, 1, 3)}
  82.    Roll(1966080); {Roll(30)}
  83.    Pitch(4587520); {Pitch(70)}
  84.    PlotGrid;
  85.  
  86.    WHILE NOT OSEventAvail(keyOrMouse, dummy) DO;
  87. END.
  88.  
  89.